package com.kly.cashmall.utils.function;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.target.SimpleTarget;

/**
 * @author
 * @since 2018/1/11 10:03
 */
public class GlideUtils {

    /**
     * 加载网络图片资源
     *
     * @param context
     * @param url
     * @param imageView
     */
    public static void loadImage(Context context, String url, ImageView imageView) {
        if (context != null)
            Glide.with(context).load(url).into(imageView);
    }

    /**
     * 加载本地图片资源
     *
     * @param context
     * @param resource
     * @param imageView
     */
    public static void loadImage(Context context, int resource, ImageView imageView) {
        if (context != null)
            Glide.with(context).load(resource).into(imageView);
    }

    /**
     * 加载网络图片资源，传入本地图片资源作为加载失败的占位图
     *
     * @param context
     * @param url
     * @param defaultImage
     * @param imageView
     */
    public static void loadImage(Context context, String url, int defaultImage,
                                 ImageView imageView) {
        if (context != null)
            Glide.with(context).load(url).error(defaultImage).into(imageView);
    }

    /**
     * 加载网络图片资源，传入本地图片资源作为占位图
     *
     * @param context
     * @param url
     * @param holderImage
     * @param imageView
     */
    public static void loadImage(Context context, String url, ImageView imageView,
                                 int holderImage) {
        if (context != null)
            Glide.with(context).load(url).placeholder(holderImage).into(imageView);
    }

    /**
     * 加载base64图片，并将资源以drawable的形式回调
     *
     * @param context
     * @param base64
     * @param target
     */
    public static void loadImage(Context context, byte[] base64, SimpleTarget<Drawable> target) {
        if (context != null)
            Glide.with(context).load(base64).into(target);
    }

    /**
     * 加载base64图片
     *
     * @param context
     * @param base64
     * @param iv
     */
    public static void loadImage(Context context, byte[] base64, ImageView iv) {
        if (context != null)
            Glide.with(context).load(base64).into(iv);
    }

    /**
     * 加载gif图片
     * 注意：不调用asGif函数，也能实现gif图片的加载，glide自动帮我们进行图片格式的判断。
     * 调用asGif就是指定为加载gif，而调用asBitmap则是指定为静态图片，此时如果加载的是gif图只会显示图片的第一帧。
     *
     * @param context
     * @param resource
     * @param imageView
     */
    public static void loadGifImage(Context context, int resource, ImageView imageView) {
        if (context != null)
            Glide.with(context).asGif().load(resource).into(imageView);
    }

    /**
     * 加载网络图片资源，不通过缓存去加载。
     *
     * @param context
     * @param url
     * @param imageView
     * @param holderImage
     * @param diskCacheStrategy DiskCacheStrategy.NONE 不从缓存中加载
     */
    public static void loadImageWithStrategy(Context context, String url, ImageView imageView,
                                             int holderImage, DiskCacheStrategy diskCacheStrategy) {
        if (context != null)
            Glide.with(context).load(url).placeholder(holderImage).diskCacheStrategy(diskCacheStrategy).into(imageView);
    }

    public static void loadImageWithSize(Context context, String url, ImageView imageView,
                                         int width, int height) {
        if (context != null)
            Glide.with(context).load(url).override(width, height).into(imageView);
    }
}
